import java.util.ArrayList;
import java.util.List;

import GenericGraph.Vertex;

public class main {

	/**
	 * @param args
	 */
	private static GenericGraph<Position, Integer> netwerk;
	private static List<Position> positions = new ArrayList<Position>();
	private static State Status;

	public static void main(String[] args) {

		// Creeer pertnetwerk
		PERTnetwerk pertnetwerk = new PERTnetwerk();
		pertnetwerk.setGraph(buildGraph());

		pertnetwerk.findWay(Status, positions.get(2)); //eindstation is C (dat op index 2 zit)
		
		for (Position p : positions) {
			p.setVroegsteTijd(p.getTijdVoorgangers());
			System.out.println("Naam: " + p.getNaam() + ". Vroegstetijd: " + p.getVroegsteTijd() + ". Laatstetijd: "+  p.getLaatsteTijd()+ "\n");
		}
				System.out.println("The end");
	}

	public static GenericGraph<Position, Integer> buildGraph() {
		netwerk = new GenericGraph<Position, Integer>();

		Vertex A = new Vertex("A");
		Vertex B = new Vertex("B");
		Vertex C = new Vertex("C");
		Vertex D = new Vertex("D");
		Vertex E = new Vertex("E");
		Vertex F = new Vertex("F");
		Vertex G = new Vertex("G");

		positions.add(A);
		positions.add(B);
		positions.add(C);
		positions.add(D);
		positions.add(E);
		positions.add(F);
		positions.add(G);

		// Begin punt van de Graph aangeven met Status als state. Later kan je
		// de huidige positie opvragen.
		Status = new State(A);

		netwerk.addItem(A);
		netwerk.addItem(B);
		netwerk.addItem(C);
		netwerk.addItem(D);
		netwerk.addItem(E);
		netwerk.addItem(F);
		netwerk.addItem(G);

		netwerk.addEdge(A, B, 3);
		netwerk.addEdge(A, D, 1);
		netwerk.addEdge(A, G, 3);
		netwerk.addEdge(B, F, 1);
		netwerk.addEdge(B, C, 1);
		netwerk.addEdge(D, E, 1);
		netwerk.addEdge(E, F, 1);
		netwerk.addEdge(F, C, 1);
		netwerk.addEdge(G, F, 2);

		return netwerk;

	}
}